﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using AcadPos.Entity;
using AcadPosApp.Utilidades;

namespace AcadPosApp.ControlarMatricula
{
    public partial class GerarParcelasTurma : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregaAreasConhecimento();
                pnlPesquisa.Attributes.Add("onkeypress", "return clickButton(event,'" + btnConsultar.ClientID + "')");
                carregaEstados();
                carregaPolo();
            }
        }

        private void carregaEstados()
        {
            ddlEstadoPesquisa.DataSource = ControlClass.CNEstado.listaTodosEstados();
            ddlEstadoPesquisa.DataTextField = "ESTADO";
            ddlEstadoPesquisa.DataValueField = "ID_ESTADO";
            ddlEstadoPesquisa.DataBind();
        }

        private void carregaPolo()
        {
            Polo polo = new Polo();
            polo.IdEstado = Convert.ToInt32(ddlEstadoPesquisa.SelectedValue);
            DataTable dt = ControlClass.CNPolo.listaPolosEstado(polo);
            ddlPoloPesquisa.DataSource = dt;
            ddlPoloPesquisa.DataTextField = "DESCRICAO";
            ddlPoloPesquisa.DataValueField = "ID_POLO";
            ddlPoloPesquisa.DataBind();
            if (dt.Rows.Count > 0)
            {
                ddlPoloPesquisa.Enabled = true;
            }
            else
                ddlPoloPesquisa.Enabled = false;
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            carregaGridPesquisa();
            ddlCurriculoPesquisa.Enabled = false;
            ddlCurriculoPesquisa.Items.Clear();
            gvwPesquisaTurmas.Visible = false;
        }

        private void carregaGridPesquisa()
        {
            gvwPesquisa.Visible = true;
            Curso curso = new Curso();
            curso.Descricao = txtPesquisa.Text;
            curso.IdAreaConhecimento = Convert.ToInt32(ddlAreaConhecimento.SelectedValue);
            gvwPesquisa.DataSource = ControlClass.CNCurso.listarCursos(curso);
            gvwPesquisa.DataBind();
            gvwPesquisa.SelectedIndex = -1;
        }

        private void carregaAreasConhecimento()
        {
            AreaConhecimento area = new AreaConhecimento();
            area.Descricao = string.Empty;
            ddlAreaConhecimento.DataSource = ControlClass.CNAreaConhecimento.listarAreaConhecimento(area);
            ddlAreaConhecimento.DataTextField = "DESCRICAO";
            ddlAreaConhecimento.DataValueField = "ID_AREA_CONHECIMENTO";
            ddlAreaConhecimento.DataBind();
        }

        protected void gvwPesquisa_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisa.PageIndex = e.NewPageIndex;
            carregaGridPesquisa();
        }

        protected void gvwPesquisa_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[4].Visible = true;

                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[4].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[4].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[4].Visible = false;
            }
            #endregion
        }

        protected void ddlAreaConhecimento_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwPesquisa.Visible = false;
            ddlCurriculoPesquisa.Enabled = false;
            ddlCurriculoPesquisa.Items.Clear();
            gvwPesquisaTurmas.Visible = false;
        }

        protected void gvwPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaCurriculosCurso();
            gvwPesquisaTurmas.Visible = false;
        }

        private void carregaCurriculosCurso()
        {
            ddlCurriculoPesquisa.Enabled = true;
            Curriculo curriculo = new Curriculo();
            curriculo.IdCurso = Convert.ToInt32(gvwPesquisa.SelectedValue);
            DataTable dt = ControlClass.CNCurriculo.listaCurriculoPorCurso(curriculo);
            ddlCurriculoPesquisa.DataSource = dt;
            ddlCurriculoPesquisa.DataTextField = "COD_CURRICULO_SITUACAO";
            ddlCurriculoPesquisa.DataValueField = "ID_CURRICULO";
            ddlCurriculoPesquisa.DataBind();
            if (dt.Rows.Count <= 0)
            {
                ddlCurriculoPesquisa.Enabled = false;
                ddlCurriculoPesquisa.Items.Clear();
            }
        }

        protected void ddlEstadoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregaPolo();
            gvwPesquisaTurmas.Visible = false;
        }

        protected void ddlCurriculoPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwPesquisaTurmas.Visible = false;
        }

        protected void btnConsultarTurmas_Click(object sender, EventArgs e)
        {
            gvwPesquisaTurmas.Visible = true;
            carregaTurmas();
            btnIncluir.Visible = false;
        }

        private void carregaTurmas()
        {
            Turma turma = new Turma();
            turma.IdCurriculo = Convert.ToInt32(ddlCurriculoPesquisa.SelectedValue);
            turma.IdPolo = Convert.ToInt32(ddlPoloPesquisa.SelectedValue);
            gvwPesquisaTurmas.DataSource = ControlClass.CNTurma.listaTurmas(turma);
            gvwPesquisaTurmas.DataBind();
            gvwPesquisaTurmas.SelectedIndex = -1;
        }

        protected void gvwPesquisaTurmas_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvwPesquisaTurmas.PageIndex = e.NewPageIndex;
            carregaTurmas();
        }

        protected void gvwPesquisaTurmas_RowDataBound(object sender, GridViewRowEventArgs e)
        {

            #region Configurando Imagem do Status
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[10].Visible = true;
                Image controle = (Image)e.Row.FindControl("imgStatus");
                DataRow linha = (e.Row.DataItem as DataRow);
                if ((e.Row.Cells[10].Text.Trim()) == "A")
                    controle.ImageUrl = "~/Imagens/ativo.png";
                else
                    controle.ImageUrl = "~/Imagens/inativo.png";
                e.Row.Cells[10].Visible = false;
            }
            if (e.Row.RowType == DataControlRowType.Header)
            {
                e.Row.Cells[10].Visible = false;
            }
            #endregion
        }

        protected void ddlPoloPesquisa_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvwPesquisaTurmas.Visible = false;
        }

        protected void btnConfirmarGerar_Click(object sender, EventArgs e)
        {
            try
            {
                Matricula matricula = new Matricula();
                matricula.IdTurma = Convert.ToInt32(gvwPesquisaTurmas.DataKeys[gvwPesquisaTurmas.SelectedIndex]["ID_TURMA"].ToString());
                matricula.PrimeiroVencimento = Convert.ToDateTime(txtData1Vencimento.Text);

                if (ControlClass.CNMatricula.geraParcelasRestantesTurma(matricula))
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.SucessoInserir, "")), true);
                    //carregaFinanceiroMatricula();
                    pnlParcelasRestantes.Visible = false;
                    pnlPesquisa.Enabled = true;
                }
                else
                {
                    ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Nada, "Não foi possível realizar a operação. Por favor, verifique se todas as parcelas já foram geradas.")), true);
                }
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Alert", string.Format("alert('{0}');", Alertas.obterMsg((int)EnumAcadPos.Mensagem.Erro, ex.Message.ToString())), true);
            }
        }

        protected void btnCancelarGerar_Click(object sender, EventArgs e)
        {
            pnlPesquisa.Enabled = true;
            pnlParcelasRestantes.Visible = false;
            gvwPesquisaTurmas.SelectedIndex = -1;
            btnIncluir.Visible = false;
        }

        protected void gvwPesquisaTurmas_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnIncluir.Visible = true;
        }

        protected void btnIncluir_Click(object sender, EventArgs e)
        {
            pnlPesquisa.Enabled = false;
            pnlParcelasRestantes.Visible = true;
            txtData1Vencimento.Text = string.Empty;
        }
    }
}